Tutorial Anfang Laden nur_CMD punkt12 Eigenes10 punkt8 Eigenes8> punkt6 Doppelabwurf /* Aufruf von PROGRAMM nach Abwurf zweier Objekte */ /* (auch "gleichzeitig") mit bergabe als Parameter */ parse arg Name New_queue = rxqueue('create', 'XXX') Old_queue = rxqueue('set', 'XXX') if New_queue = 'XXX' then /* first drop */ queue Name else do /* second drop */ parse pull Queued_name call PROGRAMM Queued_name Name call rxqueue 'delete', 'XXX' call rxqueue 'delete', New_queue end punkt5 TempFileName /* Erzeugen eines Dateinamens, den es noch nicht gibt */ TempFileName: procedure /******************************/ parse arg Name do I = 1 to 999 Testname = Name || translate(format(I,3), '0', ' ') if \exists(Testname) then return Testname end say 'Maximum von 999 Temp-Files berschritten!' punkt2 Exists /* Feststellen, ob eine Datei existiert */ Exists: procedure /************************************/ return stream(arg(1), 'c', 'query exists') \= '' punkt1 ANSI-Schale /* ANSI-Schale f r Textbildschirm */ /* Lesen von Zeichen ab einer Bildschirmposition */ Lesen: procedure /*************************************/ parse arg Zeile, Spalte Esc = '1B'x select when arg() = 0 then nop when arg() = 2 then call charout , Esc || '['Zeile';'Spalte'H' otherwise do say 'FEHLER: Lesen ben tigt entweder 0 oder 2 Argumente!' exit end end parse pull S return S /* Schreiben von Zeichen ab einer Bildschirmposition */ Schreiben: procedure /*********************************/ parse arg Zeile, Spalte, Text Esc = '1B'x select when arg() = 1 then call charout , Zeile when arg() = 2 then call charout , Esc || '['Zeile';'Spalte'H' when arg() = 3 then call charout , Esc || '['Zeile';'Spalte'H'Text otherwise do say 'FEHLER: Schreiben ben tigt 1, 2 oder 3 Argumente!' exit end end return /* Setzen der VORdergrundfarbe */ Vorsetzen: procedure expose Vordergrundcode Hintergrundcode /**********/ arg Farbe Esc = '1B'x select when pos('GEHEIM', Farbe) > 0 then C = 8 when pos('SCHWARZ', Farbe) > 0 then C = 30 when pos('ROT', Farbe) > 0 then C = 31 when pos('GR N', Farbe) > 0 then C = 32 when pos('GELB', Farbe) > 0 then C = 33 when pos('BLAU', Farbe) > 0 then C = 34 when pos('MAGENTA', Farbe) > 0 then C = 35 when pos('CYAN', Farbe) > 0 then C = 36 when pos('WEI ', Farbe) > 0 then C = 37 otherwise do say 'FEHLER: Farbe ung ltig f r Vordergrund!' exit end end if left(Farbe, 4) = 'HELL' then C = '1;'C else do call charout , Esc || '[0m' if left(Hintergrundcode,1) = Esc then call charout , Hintergrundcode end Vordergrundcode = Esc || '['C'm' call charout , Vordergrundcode return /* Setzen der HINtergrundfarbe */ Hinsetzen: procedure expose Vordergrundcode Hintergrundcode /**********/ arg Farbe Esc = '1B'x select when pos('SCHWARZ', Farbe) > 0 then C = 40 when pos('ROT', Farbe) > 0 then C = 41 when pos('GR N', Farbe) > 0 then C = 42 when pos('GELB', Farbe) > 0 then C = 43 when pos('BLAU', Farbe) > 0 then C = 44 when pos('MAGENTA', Farbe) > 0 then C = 45 when pos('CYAN', Farbe) > 0 then C = 46 when pos('WEI ', Farbe) > 0 then C = 47 otherwise do say 'FEHLER: Farbe ung ltig f r Hintergrund!' exit end end if left(Farbe, 4) = 'HELL' then C = '5;'C else do call charout , Esc || '[0m' if left(Vordergrundcode,1) = Esc then call charout , Vordergrundcode end Hintergrundcode = Esc || '['C'm' call charout , Hintergrundcode return /* Setzen, ob automatischer ZeilenUMbruch */ Umsetzen: procedure /**********************************/ arg Modus Esc = '1B'x select when Modus = 'aus' then Modus = 'h' when Modus = 'ein' then Modus = 'l' otherwise do say "FEHLER: Autom. Zeilenumbruch nur 'ein' oder 'aus'!" exit end end call charout , Esc || '[=3h' || Esc || '[=7' || Modus return schen des Bildschirms bzw. Zeilenrests */ Leeren: procedure /************************************/ arg Parm Esc = '1B'x select when Parm = '' then call charout , Esc || '[2J' when Parm = 'REST' then call charout , Esc || '[K' otherwise do say 'FEHLER: Angabe ung ltig f r Leeren!' exit end end return punkt10 Eigenes10 punkt0 Logo= Drucken VRexx-Hilfe Bookshelf< save_before_run Einstellungen_Run_Anfragenq Arbeitsverzeichnis X_ascii Y_ascii Automatisches Speichern REXX.AUS[ Vordergrundfarbe Black Hintergrundfarbe White Schrift 10.System Monospaced Breite punkt9 Eigenes9 punkt11 Eigenes7 punkt3 Bootdrive /* Ermitteln des OS/2-Startlaufwerks */ Bootdrive: procedure /*********************************/ Pfad = translate(value('PATH',,'OS2ENVIRONMENT')) return substr(Pfad, pos('\OS2\SYSTEM', Pfad)-2, 1) punkt4 Tauschen /* Ersetzen aller VON nach NACH in TEXT */ Tauschen: procedure /**********************************/ parse arg Text, Von, Nach if pos(Von, Nach) > 0 then do say 'Endlosschleife in Tauschen!' exit end do forever K = pos(Von, Text) if K = 0 then leave Text = substr(Text, 1, K-1) || , Nach || , substr(Text, K+length(Von)) end return Text punkt7 Eigenes7 Version Richard Sturm User_Name Nummer Gates